import { Context } from "./Context";
import { Role } from "./Role";

/** 不要忘记重写卡牌名字 static cardName、description */
export abstract class Card {
    constructor(public masterRole: Role) {

    }
    static cardName: string = "忘记写名字了。";
    static description: string = "暂无说明。";
    /** 随机拿牌的概率，最小是1,默认是1000。 */
    static random: number = 1000;

    get game() {
        return this.masterRole.game;
    }
    /** 返回卡牌的名字 */
    getName() {
        return (this.constructor as typeof Card).cardName
    }
    getDescription() {
        return (this.constructor as typeof Card).description
    }
    /** 在这个函数内编写效果(当牌被打出的时候触发) */
    public abstract outHook(context: Context): void;
}

/**
 * 仅表示 Card 的子类，实际不会运行。
 */
//@ts-ignore
export class CardSubClass extends Card { }